#! /usr/bin/env python3
# -*- coding: utf-8 -*-

'''
正则表达式
'''
import re # 引入re 正则模块


#  \d 可以匹配一个数字
#  \w 可以匹配一个字母或数字
#  .  可以匹配任意字符
#  \s 可以匹配一个空格(也包括Tab等空白符)
#  *  表示0-n个字符
#  +  表示至少1个字符
#  ？ 表示0或1个字符
#  {n}表示n个字符
#  {n,m}表示n-m个字符

m = '\d{3}\s+\d{3,8}'
# \d{3}  表示匹配3个数字
# \s 可以匹配一个空格(也包括Tab等空白符)
# \s+ 表示至少有一个空格
# \d{3,8} 表示3-8个数字

# - 符号属于特殊字符， 需要使用\ 转义
# [] 表示范围
# A|B 可以匹配A或者B
p = '(P|p)ython'  #可以匹配 python 或者Python

# ^ 表示行开头, ^\d表示必须以数字开头
# $ 表示行结束, \d$ 表示必须以数字结束

r = re.match(r'\d{3}\-\d{3,8}$', '011-12345')
print(r)
rr = re.match(r'\d{3}\-\d{3,8}$', '010 12345')
print(rr)

# match() 方法判断是否匹配，成功 返回Math对象，否则返回None
if re.match(r'\d{3}\-\d{3,8}$', '010-12345'):
    print('匹配成功')
else:
    print('匹配失败')

print('提取分组')
# 用() 表示的就是要踢去的分组
m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345')
print(m)
print(m.group(0))  # group(0)永远是原始字符操
print(m.group(1))
print(m.group(2))

t = '19:05:30'

m = re.match(r'^(0[0-9]|1[0-9]|2[0-3]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])\:(0[0-9]|1[0-9]|2[0-9]|3[0-9]|4[0-9]|5[0-9]|[0-9])$', t)
print(m.groups())  # 返回全部
print(m.groupdict())
